Algorithme de Chudnovsky

Modifié par Clemni

Les méthodes de calcul modernes se basent sur une autre somme dont la convergence est plus rapide. Cette formule a notamment permis d'établir un nouveau record de calcul des décimales de  \(\pi\) le 14 mars 2024, puisque ce ne sont pas moins de 105 000 milliards de chiffres du développement décimal qui ont été calculés à l'aide de la formule suivante : 
\(\dfrac{1}{\pi}=12\displaystyle\sum_{k=0}^{+\infty} \dfrac{(-1)^k(6k)!(545140134k+13591409)}{(3k)!(k!)^3(640320)^{3k+3/2}}\)

Ce calcul a tout de même duré 75 jours, du 14 décembre 2023 au 27 février 2024 !

Le programme ci-dessous permet de calculer les 10 premiers termes de l'inverse de cette somme.

import decimal

def binary_split(a, b):
    if b == a + 1:
        Pab = -(6*a - 5)*(2*a - 1)*(6*a - 1)
        Qab = 10939058860032000 * a**3
        Rab = Pab * (545140134*a + 13591409)
    else:
        m = (a + b) // 2
        Pam, Qam, Ram = binary_split(a, m)
        Pmb, Qmb, Rmb = binary_split(m, b)
        
        Pab = Pam * Pmb
        Qab = Qam * Qmb
        Rab = Qmb * Ram + Pam * Rmb
    return Pab, Qab, Rab

def chudnovsky(n):
    """Chudnovsky algorithm."""
    P1n, Q1n, R1n = binary_split(1, n)
    return (426880 * decimal.Decimal(10005).sqrt() * Q1n) / (13591409*Q1n + R1n)

print(chudnovsky(2))  # 3.141592653589793238462643384

decimal.getcontext().prec = 100
for n in range(2,10):
    print(f"{n=} {chudnovsky(n)}")  # 3.14159265358979323846264338...

Source : https://lesmanuelslibres.region-academique-idf.fr
Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/mathematiques-terminale-specialite ou directement le fichier ZIP
Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0